GaStat launches real estate index indicator

Based on ministry of justice registry data GaStat launches real estate index indicator On Monday 27th of Rajab 1438 H corresponding to 24th of April 2017, GaStat launched the Saudi real estate index indicator. This indicator is based on available registry data of the ministry of justice which are about real estate transactions . GaStat described this indicator as an essential tool that supports entities which make economic and statistical decisions associated with real estate price movements and future expectations during different periods of time. The indicator includes three main sectors composed of many real estate classes: residential sector ( piece of land, building, villa, apartment, and house) , commercial sector (piece of land, building, shop, and commercial center), and agricultural sector ( agricultural lands). Real estate price index indicator showed a decrease in the Saudi real estate prices during the first quarter of 2017. The indicator registered a decrease of (2.3%) compared to the previous quarter (fourth quarter of 2016). Whereas it registered a decrease of (9.9%) during the first quarter of 2017 compared to the same quarter of last year. The report attributed the decrease in the first quarter of 2017 (compared to the previous quarter) to the decrease in all composing sectors: commercial sector (1.8%), residential sector (2.6%), and agricultural sector (0.3%). On the other hand, the decrease in the first quarter of 2017 (compared to the same quarter of 2016) is attributed to the decrease in all composing sectors: commercial sector (11.7%), residential sector (9.5%), and agricultural sector (1.3%). GaStat indicated in a workshop ,held in " Restatex " exhibition in Riyadh city, that : as an official reference of statistics and an organizer of the statistical sector in Saudi Arabia, one of Gastat tasks is following up the price movement of real estate composing units and recording the values of their transactions all over Saudi Arabia. In addition to monitoring their changes from time to time through the new statistical product " real estate price index" which relies on the data provided by ministry of justice. This represents the integration and cooperation between the different government entities which aim at moving sustainable development forward. GaStat also stated that the new statistical product aims at founding distinct real estate statistical indicators that measure the Saudi real estate market performance and fill the gap of data in this sector. It is considered an essential tool that supports entities which make economic decisions in this field. This product's data benefit those who are interested in the economic and statistical analysis of real estate prices and the future expectations during different periods of time. GaStat has issued a complete bulletin about this index and its details.

Image Alt Text
12-09-2017
Based on ministry of justice registry data GaStat launches real estate index indicator On Monday 27th of  Rajab 1438 H corresponding to 24th of  April 2017, GaStat launched the Saudi real estate index indicator. This indicator is based on available registry data of the ministry of justice which are about real estate transactions . GaStat described this indicator as an essential tool that supports entities which make economic and statistical decisions  associated with real estate price movements and future expectations during different periods of time. The indicator includes three main sectors composed of many real estate classes: residential sector ( piece of land, building, villa, apartment, and house) , commercial sector (piece of land, building, shop, and commercial center), and agricultural sector ( agricultural lands).  Real estate price index indicator showed a decrease in the Saudi real estate prices during the first quarter of 2017. The indicator registered a decrease of (2.3%) compared to the previous quarter (fourth quarter of 2016). Whereas it registered a decrease of (9.9%) during the first quarter of 2017 compared to the same quarter of last year. The report attributed the decrease in the first quarter of 2017 (compared to the previous quarter) to the decrease in all composing sectors: commercial sector (1.8%), residential sector (2.6%), and agricultural sector (0.3%).  On the other hand,  the decrease in the first quarter of 2017 (compared to the same quarter of 2016) is attributed  to the decrease in all composing sectors: commercial sector (11.7%), residential sector (9.5%), and agricultural sector (1.3%).  GaStat indicated in a workshop ,held in " Restatex " exhibition in Riyadh city, that : as an official  reference of statistics and an organizer of the statistical sector in Saudi Arabia, one of Gastat tasks is following up the price movement of real estate composing units and recording the values of their transactions all over Saudi Arabia. In addition to monitoring their changes from time to time through the new statistical product " real estate price index" which relies on the data provided by ministry of justice. This represents the integration and cooperation between the different government entities which aim at moving sustainable development forward.  GaStat also stated that the new statistical product aims at founding distinct real estate statistical indicators that measure the Saudi real estate market performance and fill the gap of data in this sector. It is considered an essential tool that supports entities which make economic decisions in this field. This product's data benefit those who are interested in the economic and statistical analysis of real estate prices and the future expectations during different periods of time. GaStat has issued a complete bulletin about this index and its details.
An error occurred while processing the template.
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>