قفز ترتيب المملكة العربية السعودية ممثلةً بالهيئة العامة للإحصاء في مؤشر تقييم أداء الأجهزة الإحصائية الوطنية (SPI) الصادر عن البنك الدولي 25 مرتبةً، إذ احتلت المرتبة الأولى خليجياً، وتقدَّمت بأربع مراتب في ذات المؤشر بين دول مجموعة العشرين (G20) حيث جاءت في المرتبة 15 بعد أن كانت في المرتبة 19 في التقييم السابق عام 2019م. وأعلن البنك الدولي مؤخراً عبر موقعه الرسمي نتائج تقييم نضج وأداء الأنظمة الإحصائية (SPI) الذي شمل 186 دولة، ويتناول خمسة محاور رئيسة موزعة على أكثر من 52 مؤشرًا، تغطي مصادر وخدمات البيانات والمنتجات الإحصائية ومصادر البيانات والبنية التحتية، موضحاً أن المملكة حقَّقت 100 % في محور استخدام البيانات، كما حققت في التقييم نسبة 80,8 % بقفزة كبيرة عن التقييم السابق الذي بلغ 63,4 % في عام 2019م، وكانت الأعلى تقدمًا بين دول مجموعة العشرين بمعدل تقدم بلغ 17,4 % من جانبه أوضح رئيس الهيئة العامة للإحصاء الدكتور فهد بن عبد الله الدوسري أن الدعم والتمكين الذي حظيت به الهيئة خلال الفترة الماضية أسهم في تحقيق التحولات الاستراتيجية في مجال الإنتاج الإحصائي والبنية التحتية التقنية، الأمر الذي كان له عظيم الأثر في تعزيز الدور الإحصائي الذي تقوم به الهيئة، وتحقيق التقدم الذي أحرزته على كثير من الأجهزة الإحصائية الرسمية حول العالم، والإسهام في بناء واحتساب المؤشرات والبيانات الإحصائية ذات الجودة العالية التي تلقت الإشادة من المنظمات الدولية المتخصصة في المجال الإحصائي، وأسهمت في دعم قطاعات الدولة كافة بالبيانات الإحصائية المساندة لمتخذي القرارات وراسمي السياسات، مؤكداً أهمية السعي الدائم بالتعاون مع الشركاء للاستمرار في تطوير الإنتاج الإحصائي. يشار إلى أن هذا التقدم الكبير الذي حقَّقته المملكة في مؤشر تقييم أداء الأجهزة الإحصائية الوطنية (SPI) يأتي استمراراً لجهود الهيئة العامة للإحصاء في تنفيذ التحول الإحصائي الذي يواكب التحول الوطني في مختلف القطاعات والمجالات تحقيقًا لرؤية السعودية 2030 حيث تبذل الهيئة جهودًا حثيثة لاستشراف المستقبل في ضوء استراتيجية التحول التي تشمل تطوير البنية التقنية للهيئة وتطوير المسوح الميدانية والمنتجات الإحصائية بالإضافة إلى تعزيز الشرَاكات مع القطاعين الحكومي والخاص والقطاع غير الربحي، والعمل على تحسين إتاحة البيانات، وتلبية المتطلبات الإحصائية على المستويات المحلية والإقليمية والدولية، والحرص على زيادة رضا العملاء من خلال التطوير المستمر في عرض البيانات والمؤشرات الإحصائية بطريقة تفاعلية وسلسة. في ذات السياق يعكس هذا الإنجاز حجم الدعم والتمكين الذي تحظى به الهيئة من القيادة الرشيدة، والثقة الكبيرة في دورها الوطني المساهم في توفير البيانات الإحصائية، وبناء وقياس المؤشرات الإحصائية الوطنية الداعمة لخطط التنمية المستدامة وتطوير الاقتصاد السعودي، وتحسين ورفع مستوى جودة الحياة في المملكة.
انفوجرافيك
The following has evaluated to null or missing:
==> carouselId [in template "11099719610328#20119#59266" at line 139, column 29]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${carouselId} [in template "11099719610328#20119#59266" at line 139, column 27]
----
1<section class="section pt-5">
2 <div class="read-also container">
3 <#if entries?has_content>
4
5 <h1 class="fs-3 fw-bolder pb-3">
6 <@liferay.language key="read-also" />
7 </h1>
8
9 <#assign
10 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
11 StructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
12 currentUrlParts = themeDisplay.getURLCurrent()?split("/")
13 currentUrlTitle = currentUrlParts[currentUrlParts?size - 1]
14 filteredEntries = []
15 />
16
17 <#list entries as entry>
18 <#assign
19 article = journalArticleLocalService.getLatestArticle(entry.classPK?number)
20 structure = StructureLocalService.getStructure(article.getDDMStructure().getPrimaryKey())
21 structureName = structure.getName()
22 />
23
24 <#if currentUrlTitle != article.urlTitle>
25 <#assign filteredEntries = filteredEntries + [entry] />
26 </#if>
27 </#list>
28
29 <#if filteredEntries?has_content>
30
31 <#assign
32 cardsPerSlide = 3
33 totalItems = filteredEntries?size
34 totalSlides = (totalItems / cardsPerSlide)?ceiling
35 portletId = themeDisplay.getPortletDisplay().getId()?replace("_", "")?replace("INSTANCE", "")
36 carouselId = "readAlsoCarousel_" + portletId
37 />
38
39 <div
40 id="${carouselId}"
41 class="carousel slide"
42 data-bs-ride="false"
43 data-bs-interval="false"
44 data-bs-touch="true"
45 >
46
47 <div class="carousel-inner">
48
49 <#list 0..(totalSlides - 1) as slideIndex>
50 <#assign
51 startIndex = slideIndex * cardsPerSlide
52 endIndex = startIndex + cardsPerSlide - 1
53 />
54
55 <#if endIndex gt totalItems - 1>
56 <#assign endIndex = totalItems - 1 />
57 </#if>
58
59 <div class="carousel-item <#if slideIndex == 0>active</#if>">
60 <div class="row g-4">
61
62 <#list startIndex..endIndex as itemIndex>
63 <#assign
64 entry = filteredEntries[itemIndex]
65 article = journalArticleLocalService.getLatestArticle(entry.classPK?number)
66 />
67
68 <div class="col-12 col-md-6 col-xl-4">
69 ${articleService.getContentByClassPK(entry.classPK?number, "50306")}
70 </div>
71 </#list>
72
73 </div>
74 </div>
75 </#list>
76
77 </div>
78
79 <div class="carousel-indicators position-static d-flex justify-content-center align-items-center gap-2 mt-4 mb-0 mx-0">
80 <#list 0..(totalSlides - 1) as slideIndex>
81 <#assign
82 startItem = (slideIndex * cardsPerSlide) + 1
83 endItem = startItem + cardsPerSlide - 1
84 />
85
86 <#if endItem gt totalItems>
87 <#assign endItem = totalItems />
88 </#if>
89
90 <button
91 type="button"
92 data-bs-target="#${carouselId}"
93 data-bs-slide-to="${slideIndex}"
94 class="rounded-circle m-0 flex-shrink-0 <#if slideIndex == 0>active</#if>"
95 style="width: 16px; height: 16px; padding: 0; opacity: 1; border: 2px solid <#if slideIndex == 0>#1b8354<#else>#d2d6db</#if>; background-color: <#if slideIndex == 0>#1b8354<#else>#ffffff</#if>;"
96 <#if slideIndex == 0>
97 aria-current="true"
98 </#if>
99 aria-label="عرض الأخبار من ${startItem} إلى ${endItem}">
100</button>
101 </#list>
102 </div>
103
104 </div>
105
106 </#if>
107
108 </#if>
109 </div>
110</section>
111<script>
112(function () {
113 function updateDotsStyle(carouselId) {
114 var carousel = document.getElementById(carouselId);
115
116 if (!carousel) {
117 return;
118 }
119
120 var dots = carousel.querySelectorAll('.carousel-indicators button');
121
122 dots.forEach(function (dot) {
123 dot.style.width = '16px';
124 dot.style.height = '16px';
125 dot.style.padding = '0';
126 dot.style.borderRadius = '50%';
127 dot.style.opacity = '1';
128
129 if (dot.classList.contains('active')) {
130 dot.style.backgroundColor = '#1b8354';
131 dot.style.border = '2px solid #1b8354';
132 } else {
133 dot.style.backgroundColor = '#ffffff';
134 dot.style.border = '2px solid #d2d6db';
135 }
136 });
137 }
138
139 var carouselId = '${carouselId}';
140
141 updateDotsStyle(carouselId);
142
143 var carousel = document.getElementById(carouselId);
144
145 if (carousel) {
146 carousel.addEventListener('slid.bs.carousel', function () {
147 updateDotsStyle(carouselId);
148 });
149
150 carousel.addEventListener('slide.bs.carousel', function () {
151 setTimeout(function () {
152 updateDotsStyle(carouselId);
153 }, 50);
154 });
155 }
156})();
157</script>